package com.ziytek.web.citizen.util;

import com.ziytek.web.citizen.constant.NumConstant;

/**
 * @author fenghx
 * @version v1.0
 * @className XorDataUtils
 * @descripton 功能描述
 * @date 2023/4/27 15:16
 **/
public class XorDataUtils {

    public static String getXor(byte[] data) {
        byte temp = 0x00;
        for (int i = NumConstant.INT_ONE; i < data.length; i++) {
            temp ^= data[i];
        }

        byte[] b = new byte[NumConstant.INT_ONE];
        b[NumConstant.INT_ZERO] = temp;
        return byte2Hex(b);
    }

    /**
     * byte数组转16进制字符串
     *
     * @param inByte byte
     */
    public static String byte2Hex(byte[] inByte) {

        StringBuilder sb = new StringBuilder();
        String hexString;

        for (byte b : inByte) {
            //toHexString方法用于将16进制参数转换成无符号整数值的字符串
            String hex = Integer.toHexString(b);
            if (hex.length() == NumConstant.INT_ONE) {
                //当16进制为个位数时，在前面补0
                sb.append("0");
            }
            //将16进制加入字符串
            sb.append(hex);
            //16进制字符串后补空格区分开
            sb.append(" ");
        }

        hexString = sb.toString();
        //将16进制字符串中的字母大写
        hexString = hexString.toUpperCase();
        return hexString.trim();
    }
}
